home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / answers / games / corewar-faq < prev    next >
Encoding:
Internet Message Format  |  1993-06-24  |  22.1 KB

  1. Path: senator-bedfellow.mit.edu!enterpoop.mit.edu!pad-thai.aktis.com!pad-thai.aktis.com!not-for-mail
  2. From: stst@vuse.vanderbilt.edu (Stefan Strack)
  3. Newsgroups: rec.games.corewar,rec.answers,news.answers
  4. Subject: Core War Frequently Asked Questions (rec.games.corewar FAQ)
  5. Supersedes: <games/corewar-faq_739684808@GZA.COM>
  6. Followup-To: rec.games.corewar
  7. Date: 25 Jun 1993 00:00:12 -0400
  8. Organization: The Core War Newsletter
  9. Lines: 510
  10. Sender: faqserv@GZA.COM
  11. Approved: news-answers-request@MIT.Edu
  12. Expires: 24 Jul 1993 04:00:07 GMT
  13. Message-ID: <games/corewar-faq_740980807@GZA.COM>
  14. Reply-To: stst@vuse.vanderbilt.edu (Stefan Strack)
  15. NNTP-Posting-Host: pad-thai.aktis.com
  16. Summary: This posting contains a list of Frequently Asked Questions
  17.          (and their answers) about the game Core War.  It should be
  18.          read by anyone interested in posting to the rec.games.corewar
  19.          newsgroup or submitting warriors to the ongoing Core War
  20.          tournament - KotH.
  21. X-Last-Updated: 1993/04/25
  22. Xref: senator-bedfellow.mit.edu rec.games.corewar:388 rec.answers:1282 news.answers:9719
  23.  
  24. Archive-name: games/corewar-faq
  25. Last-modified: 1993/04/16
  26. Version: 2.0.4
  27.  
  28. These are the Frequently Asked Questions (and answers) from the USENET
  29. newsgroup rec.games.corewar. This FAQ list is also available by anonymous FTP
  30. from rtfm.mit.edu as pub/usenet/news.answers/games/corewar-faq.Z.
  31.  
  32.  
  33. TABLE OF CONTENTS                                                   Line
  34. ------------------------------------------------------------------------
  35.  
  36.  1. What is Core War?                                                 67
  37.  
  38.  2. Is it Core War or Core Wars?                                      80
  39.  
  40.  3. Where can I find more information about Core War?                 88
  41.  
  42.  4. Core War has changed since Dewdney's articles. Where do I get    106
  43.     a copy of the current instruction set?
  44.  
  45.  5. What is the ICWS?                                                120
  46.  
  47.  6. What is TCWN?                                                    130
  48.  
  49.  7. How do I join?                                                   138
  50.  
  51.  8. Are back issues of TCWNs available?                              158
  52.  
  53.  9. What is the EBS?                                                 165
  54.  
  55. 10. Where are the Core War archives?                                 181
  56.  
  57. 11. Where can I find a Core War system for . . . ?                   198
  58.  
  59. 12. I do not have ftp.  How do I get all of this great stuff?        215
  60.  
  61. 13. I do not have access to Usenet.  How do I post and receive news? 222
  62.  
  63. 14. When is the next tournament?                                     243
  64.  
  65. 15. What is KOTH?  How do I enter?                                   252
  66.  
  67. 16. Is it DAT 0, 0 or DAT #0, #0?  How do I compare to core?         357
  68.  
  69. 17. How does SLT (Skip if Less Than) work?                           369
  70.  
  71. 18. What does (expression or term of your choice) mean?              381
  72.  
  73. 19. Other questions?                                                 509
  74.  
  75. ---------------------------------------------------------------------
  76.  
  77. Q 1: What is Core War?
  78. A 1: Core War is a game played by two or more programs (and vicariously
  79. by their authors) written in an assembly language called Redcode and
  80. run in a virtual computer called MARS (for Memory Array Redcode Simulator).
  81. The object of the game is to cause all of the opposing programs to
  82. terminate, leaving your program in sole posession of the machine.
  83.  
  84. There are Core War systems available for most computer platforms.
  85. Redcode has been standardized by the ICWS, and is therefore transportable
  86. between all standard Core War systems.
  87.  
  88. ----------------------------------------------------------------------
  89.  
  90. Q 2: Is it "Core War" or "Core Wars"?
  91. A 2: Both terms are used.  Early references were to Core War.  Later
  92. references seem to use Core Wars.  I prefer "Core War" to refer to
  93. the game in general, "core wars" to refer to more than one specific
  94. battle.
  95.  
  96. ----------------------------------------------------------------------
  97.  
  98. Q 3: Where can I find more information about Core War?
  99. A 3: Core War was first described in the "Core War Guidelines" of March,
  100. 1984 by D. G. Jones and A. K. Dewdney of the Department of Computer
  101. Science at The University of Western Ontario (Canada).  Dewdney wrote
  102. several "Computer Recreations" articles in "Scientific American" which
  103. discussed Core War, starting with the May 1984 article.  Those articles
  104. are contained in an anthology:
  105.  
  106. Author: Dewdney, A. K.
  107. Title: The Armchair Universe: An Exploration of Computer Worlds
  108. Published: New York: W. H. Freeman (c) 1988
  109. ISBN: 0-7167-1939-8
  110. Library of Congress Call Number: QA76.6 .D517 1988
  111.  
  112. The Redcode language has changed somewhat since; see Q 4.
  113.  
  114. ---------------------------------------------------------------------
  115.  
  116. Q 4: Core War has changed since Dewdney's articles. Where do I get a
  117. copy of the current instruction set?
  118. A 4: A draft of the official standard (ICWS'88) is available by anonymous
  119. FTP from the Core War archives (soda.berkeley.edu) as
  120. pub/corewar/documents/standards/redcode-icws-88.Z
  121.  
  122. This document is formatted awkwardly and contains ambiguous statements. For a
  123. more approachable intro to Redcode, take a look at
  124. pub/corewar/documents/tutorial.1.Z
  125.                       tutorial.2.Z
  126. (See also Q10)
  127.  
  128. ---------------------------------------------------------------------
  129.  
  130. Q 5: What is the ICWS?
  131. A 5: About one year after Core War first appeared in Sci-Am, the
  132. "International Core War Society" (ICWS) was established.  Since that
  133. time, the ICWS has been responsible for the creation and maintenance
  134. of Core War standards and the running of Core War tournaments.  There
  135. have been six annual tournaments and two standards (ICWS'86 and
  136. ICWS'88).
  137.  
  138. ---------------------------------------------------------------------
  139.  
  140. Q 6: What is TCWN?
  141. A 6: Since March of 1987, "The Core War Newsletter" (TCWN) has been the
  142. official newsletter of the ICWS.  It is published quarterly and recent
  143. issues are also available as Encapsulated PostScript on soda.berkeley.edu
  144. (see Q9).
  145.  
  146. ---------------------------------------------------------------------
  147.  
  148. Q 7: How do I join?
  149. A 7: For more information about joining the ICWS (which includes a
  150. subscription to TCWN), contact:
  151.  
  152. A 7: For more information about joining the ICWS (which includes a
  153. subscription to TCWN), or to contribute an article, review, cartoon, letter,
  154. joke, rumor, etc. to TCWN, please contact:
  155.  
  156.    Jon Newman
  157.    13824 NE 87th Street
  158.    Redmond, WA 98052-1959
  159.    email: jonn@microsoft.com  (Note: Microsoft has NO affiliation with
  160.                                      Core War.  Jon Newman just happens
  161.                                      to work there, and we want to keep
  162.                                      it that way!)
  163.  
  164. Current annual dues are $15.00 in US currency.
  165.  
  166. ----------------------------------------------------------------------
  167.  
  168. Q 8: Are back issues of TCWN available?
  169. A 8: Recent issues can be found on soda.berkeley.edu (see Q10).
  170. Older issues (up to Winter 1991) are also available (see the next TCWN
  171. for details).
  172.  
  173. ---------------------------------------------------------------------
  174.  
  175. Q 9: What is the EBS?
  176. A 9: The Electronic Branch Section (EBS) of the ICWS is a group of
  177. Core War enthusiasts with access to electronic mail.  There are no fees
  178. associated with being a member of the EBS, and members do reap some of
  179. the benefits of full ICWS membership without the expense.  For instance,
  180. the ten best warriors submitted to the EBS tournament are entered
  181. into the annual ICWS tournament.  All EBS business is conducted in the
  182. rec.games.corewar newsgroup.
  183.  
  184. The current goal of the EBS is to be at the forefront of Core War by
  185. writing and implementing new standards and test suites in preparation for
  186. the tenth anniversary of Core War in May of 1994.  Its immediate business
  187. will be to set up a Charter and establish its officers.
  188.  
  189. ----------------------------------------------------------------------
  190.  
  191. A10: Where is the Core War archive?
  192. Q10: Many documents such as the guidelines and the ICWS standards 
  193. along with previous tournament Redcode entries and complete Core War
  194. systems are available via anonymous ftp from soda.berkeley.edu 
  195. (128.32.149.19) in the /pub/corewar directories.  Also, most of past 
  196. rec.games.corewar postings (including Redcode source listings) are 
  197. archived there.  Jon Blow (blojo@soda.berkeley.edu) is the archive 
  198. administrator.
  199.  
  200. Much of what is available on soda is also available on the German archive
  201. at iraun1.ira.uka.de (129.13.10.90) in the /pub/X11/corewars directory.
  202.  
  203. This FAQ is automatically archived by news.answers.  See the header for
  204. the current archive name and news.answers for how to get it.
  205.  
  206. ----------------------------------------------------------------------
  207.  
  208. Q11: Where can I find a Core War system for . . . ?
  209. A11: Core War systems are available via anonymous ftp from
  210. soda.berkeley.edu in the pub/corewar/systems directory.
  211. Currently, there are Unix X-Window, IBM PC-compatible (sorry, no systems
  212. specifically designed for MS-Windows yet), Macintosh, and Amiga
  213. Core War systems available there.
  214.  
  215. CAUTION!  There are many, many Core War systems available which are NOT
  216. ICWS'88 (or even ICWS'86) compatible available at various archive sites
  217. other than soda.berkeley.edu.  Generally, the older the program - the less
  218. likely it will be ICWS compatible.
  219.  
  220. Reviews of Core War systems would be greatly appreciated in the newsgroup
  221. and in the newsletter.
  222.  
  223. ----------------------------------------------------------------------
  224.  
  225. Q12: I do not have ftp.  How do I get all of this great stuff?
  226. A12: There is an ftp email server at ftpmail@decwrl.dec.com.  Send
  227. email with a subject and body text of "help" (without the quotes) for
  228. more information on its usage.
  229.  
  230. ----------------------------------------------------------------------
  231.  
  232. Q13: I do not have access to Usenet.  How do I post and receive news?
  233. A13: If you have access to telnet, you can read rec.games.corewar (and
  234. many more groups) through the gopher information retrieval system. Telnet to
  235. consultant.micro.umn.edu (134.84.132.4) or any of the other gopher servers
  236. and go through these menus:
  237.  
  238.         1  - Information about Gopher
  239.         10 - Gopher+ example server
  240.         11 - non-Gopher+ link
  241.         7  - News
  242.         11 - USENET news
  243.         24 - rec
  244.         21 - games
  245.         6  - corewar
  246.  
  247. If you somehow receive rec.games.corewar but just can't post, you can email
  248. your post to rec-games-corewar@cs.utexas.edu and it will be automatically
  249. posted for you.
  250.  
  251. ----------------------------------------------------------------------
  252.  
  253. Q14: When is the next tournament?
  254. A14: The ICWS holds an annual tournament.  Traditionally, the deadline
  255. for entering is the 15th of December.
  256.  
  257. The EBS usually holds a preliminary tournament around the 15th of November
  258. and sends the top finishers on to the ICWS tournament.
  259.  
  260. ----------------------------------------------------------------------
  261.  
  262. Q15: What is KOTH?  How do I enter?
  263. A15: King Of The Hill (KOTH) is an ongoing Core War tournament available
  264. to anyone with email provided by William Shubert (wms@iwarp.intel.com).  You
  265. enter by submitting via email a Redcode program with special comment lines.
  266. You will receive a reply indicating how well your program did against the
  267. current top twenty programs "on the hill".  Your program will play 100
  268. battles against each of the 20 other programs currently on the Hill. You
  269. receive 3 points for each win and 1 point for each tie.  (The existing
  270. programs do not replay each other, but their previous battles are recalled.)
  271. All scores are updated to reflect your battles and all 21 programs are ranked
  272. from high to low.  If you are number 21 you are pushed off the Hill, if you
  273. are higher than 21 someone else is pushed off.
  274.  
  275. Entry rules for King of the Hill Corewar:
  276.  
  277. 1) Write a corewar program.  KotH is fully ICWS '88 compatible, EXCEPT that
  278.    a comma (",") is required between two arguments.
  279.  
  280. 2) Put the line ";redcode" at the top of your program.  This MUST be the
  281.    first line.  Anything before it will be lost.  If you wish to receive
  282.    mail on every new entrant, use ";redcode verbose".  Otherwise you will
  283.    only receive mail if a challenger makes it onto the hill.  Use
  284.    ";redcode quiet" if you wish to receive mail only when you get shoved
  285.    off the hill.  (Also, see 5 below).
  286.  
  287.    Additionally, adding ";name <program name>" and ";author <your name>"
  288.    will be helpful in the performance reports.  Do NOT have a line
  289.    beginning with ";address" in your code; this will confuse the mail daemon
  290.    and you won't get mail back.
  291.  
  292.    In addition, it would be nice if you have lines beginning with
  293.    ";strategy" that describe the algorithm you use.
  294.  
  295. 3) Mail this file to "wms@iwarp.intel.com".
  296.  
  297. 4) Within a few minutes you should get mail back telling you whether your
  298.    program assembled correctly or not.  If it did assemble correctly,
  299.    sit back and wait; if not, make the change required and re-submit.
  300.  
  301. 5) In an hour or so you should get more mail telling you how your program
  302.    performed against the current top 20 programs.  If no news arrives in an
  303.    hour, don't worry; entries are put in a queue and run through the
  304.    tournament one at a time.  A backlog may develop.  Be patient.
  305.  
  306.    If your program makes it onto the hill, you will get mail every time a
  307.    new program makes it onto the hill.  If this is too much mail, you can use
  308.    ";redcode quiet" when you first mail in your program; then you will only
  309.    get mail when you make it on the top 20 list or when you are knocked off.
  310.    Using ";redcode verbose" will give you even more mail; here you get mail
  311.    every time a new challenger arrives, even if they don't make it onto the
  312.    top 20 list.
  313.  
  314.    Often programmers want to try out slight variations in their programs.
  315.    If you already have a program named "foo V1.0" on the hill, adding the
  316.    line ";kill foo" to a new program will automatically bump foo 1.0 off the
  317.    hill.  Just ";kill" will remove all of your programs when you submit the
  318.    new one.
  319.  
  320.  
  321. MORE ON KOTH COREWAR IMPLEMENTATION
  322.        Core size: 8 000 instructions
  323.    Max processes: 8 000 per program
  324.         Duration: After 80 000 cycles per program, a tie is declared.
  325. Max entry length: 100 instructions
  326.  
  327.    Programs are guaranteed a 100 instruction block (inclusive of their
  328.    warrior's instructions) without overlapping their opponent.
  329.  
  330.  
  331. SAMPLE ENTRY:
  332. ;redcode
  333. ;name Dwarf
  334. ;author A. K. Dewdney
  335. ;strategy Throw DAT bombs around memory, hitting every 4th memory cell.
  336. ;strategy This program was presented in the first Corewar article.
  337. bomb  DAT   #0
  338. dwarf ADD   #4,    bomb
  339.       MOV   bomb, @bomb
  340.       JMP   dwarf
  341.       END   dwarf          ; Programs start at the first line unless
  342.                            ; an "END start" pseudo-op appears to indicate
  343.                            ; the first logical instruction.  Also, nothing
  344.                            ; after the END instruction will be assembled.
  345.  
  346. Rule variants for "eXperimental" corewar:
  347. The same as above but use ";redcode-x" to start your program.
  348.  
  349. Your program will be entered into a second tournament with slightly
  350. different rules.  The rules are:
  351.    - All addressing modes are allowed with all instructions.
  352.    - There is an additional addressing mode, called "postincrement".  To use
  353.      it try an instruction like "mov >5,6".
  354.    - The maximum write distance is 250 instructions.  That is, every time
  355.      your program tries to modify memory, the address is checked; if it is
  356.      more than 250 instructions from the process doing the modify, then
  357.      memory is left unchanged, but the instruction continues as normal.
  358.    - A tie is not declared until 150,000 cycles per program have elapsed.
  359.  
  360. KotH runs on any Unix system with an X windows interface.  The source code
  361. to KotH is available by email from William Shubert.  Write to him at
  362. (wms@iwarp.intel.com) for a copy or get it by anonymous FTP from
  363. soda.berkeley.edu in the pub/corewar/systems directory.
  364.  
  365. ----------------------------------------------------------------------
  366.  
  367. Q16: Is it DAT 0, 0 or DAT #0, #0?  How do I compare to core?
  368. A16: Core is initialized to DAT 0, 0.  This is an "illegal" instruction
  369. under ICWS'88 rules and strictly compliant assemblers (such as KotH)
  370. will not let you write a DAT 0, 0 instruction - only DAT #0, #0.  So
  371. this begs the question, how to compare something to see if it is empty
  372. core.  The answer is, most likely the instruction before your first
  373. instruction and the instruction after your last instruction are both
  374. DAT 0, 0.  You can use them, or any other likely unmodified instructions,
  375. for comparison.
  376.  
  377. ----------------------------------------------------------------------
  378.  
  379. Q17: How does SLT (Skip if Less Than) work?
  380. A17: SLT gives some people trouble because of the way modular arithmetic
  381. works.  It is important to note that all negative numbers are converted
  382. to positive numbers before a battles begins.  Example: (-1) becomes
  383. (M - 1) where M is the memory size.
  384.  
  385. Once you realize that all numbers are treated as positive, it is clear 
  386. what is meant by "less than".  It should also be clear that no number is
  387. less than zero.
  388.  
  389. ----------------------------------------------------------------------
  390.  
  391. Q18: What does (expression or term of your choice) mean?
  392. A18: Here is a selected glossary of terms.  If you have a definition and/or
  393. term you wish to see here, please send it to me.
  394.  
  395. (References to an X-like program mean that the term X is derived from the
  396.    specific program X and has become a generic term).
  397.  
  398. Bootstrapping - Strategy of copying the active portion of the program
  399.    away from the initial location, leaving a decoy behind and
  400.    making the relocated program as small as possible.
  401.  
  402. B-Scanners - Scanners which only recognize non-zero B-fields.
  403.            example  add #10,scan
  404.            scan     jmz example,10
  405.  
  406. C - Measure of speed, equal to one location per cycle.  Speed of light.
  407.  
  408. CMP-Scanner - A Scanner which uses a CMP instruction to look for opponents.
  409.            example  add step,scan
  410.            scan     cmp 10,30
  411.                     jmp attack
  412.                     jmp example
  413.            step     dat #20,#20
  414.  
  415. Color - Property of bombs making them visible to scanners, causing them
  416.    to attack useless locations, thus slowing them down.
  417.            example  dat #100
  418.  
  419. Core-Clear - code that sequentially overwrites core with DAT instructions;
  420.    usually the last part of a program.
  421.  
  422. Decoys - Bogus or unused instructions meant to slow down Scanners.
  423.    Typically, DATs with non-zero B-fields.
  424.  
  425. DJN-Stream (also DJN-Train) - Using a DJN command to rapidly decrement core
  426.    locations.
  427.            example   . . .
  428.                      . . .
  429.                      djn example,<4000
  430.  
  431. Dwarf - the prototypical small bomber.
  432.  
  433. Imp - Program which only uses the MOV instruction.
  434.            example  MOV 0, 1
  435.        or
  436.            example  MOV 0, 2
  437.                     MOV 0, 2
  438.  
  439. Imp-Gate - A location in core which is bombed or decremented continuously
  440.    so that an Imp can not pass.  Also used to describe the program-code
  441.    which maintains the gate.
  442.            example   ...
  443.                      ...
  444.                      SPL 0, <example
  445.                      DAT <example, #0
  446.  
  447. Imp-Ring - A minimal Imp-Spiral.
  448.             d        EQU (coresize+1)/3
  449.             A        MOV 0,d   ; copy self to B
  450.             B        MOV 0,d   ; copy self to C
  451.             C        MOV 0,d   ; copy self to A+1
  452.  
  453. Imp-Spiral - An Imp-like program with two or more processes supporting
  454.    each other.  A three-point spiral, with six processes running in this
  455.    sequence:
  456.             d        EQU (coresize+1)/3
  457.             A        MOV 0,d   ; copy self to B
  458.             B        MOV 0,d   ; copy self to C
  459.             C        MOV 0,d   ; copy self to A+1
  460.             A+1      MOV 0,d   ; copy self to B+1
  461.             B+1      MOV 0,d   ; copy self to C+1
  462.             C+1      MOV 0,d   ; copy self to A+2
  463.  
  464. Incendiary Bomb - A type of Stun bomb which creates a SPL 0 carpet.
  465.            example   SPL 0, 8
  466.                      MOV -1, <-1
  467.  
  468. Mirror - see reflection
  469.  
  470. On-axis  -
  471. Off-axis - On-axis scanners compare two locations M/2 apart, where M
  472.    is the memory size.  Off-axis scanners use some other separation.
  473.  
  474. Paper - A Paper-like program.  One which replicates itself many times.
  475.    Part of the Scissors (beats) Paper (beats) Stone (beats Scissors) analogy.
  476.  
  477. Pit-Trapper - (also Slaver, Vampire).  A program which enslaves another.
  478.    Usually accomplished by bombing with JMPs to a SPL 0 pit with an
  479.    optional core-clear routine.
  480.  
  481. Reflection - Copy of a program or program part, positioned to make
  482.    the active program invisible to a CMP-scanner.
  483.  
  484. Replicator - Generic for Paper.  A program which makes many copies of
  485.    itself, each copy also making copies.
  486.  
  487. Self-Splitting - Strategy of amplifying the number of processes executing
  488.    a piece of code.
  489.            example   SPL 0
  490.            loop      ADD #10, example
  491.                      MOV example, @example
  492.                      JMP loop
  493.  
  494. Scanner - A program which searches through core for an opponent rather
  495.    than bombing blindly.
  496.  
  497. Scissors - A program designed to beat replicators, usually a (B-field
  498.    scanning) vampire.  Part of the Paper-Scissors-Stone analogy.
  499.  
  500. Self-Repair - Ability of a program to fix it's own code after attack.
  501.  
  502. Slaver - see Pit-Trapper.
  503.  
  504. Stealth - Property of programs, or program parts, which are invisible
  505.    to scanners, accomplished by using zero B-fields and reflections.
  506.  
  507. Stone - A Stone-like program designed to be a small bomber.  Part of the
  508.    Paper-Scissors-Stone analogy.
  509.  
  510. Stun - A type of bomb which makes the opponent multiply useless processes,
  511.    thus slowing it down.  Example is referred to as a spl-jmp bomb.
  512.           example spl 0
  513.                   jmp -1
  514.  
  515. Vampire - See Pit-Trapper.
  516.  
  517. ----------------------------------------------------------------------
  518.  
  519. Q19: Other questions?
  520. A19: Just ask in the rec.games.corewar newsgroup or contact me (address
  521. below). If you are shy, check out the Core War archives on soda first to
  522. see if your question has been answered before (see Q10).
  523.  
  524. ----------------------------------------------------------------------
  525.  
  526. Additions/Corrections/etc. to this document are solicited.
  527. The rec.games.corewar FAQ has been compiled by Mark Durham and is being
  528. maintained by:
  529.  
  530. Stefan Strack, PhD                      stst@vuse.vanderbilt.edu
  531. Dept. Pharmacology, 424 MRB             stracks@vuctrvax.bitnet
  532. Vanderbilt Univ. Medical Center         Voice: +615-322-4890
  533. Nashville, TN 37232-6600, USA           FAX:   +615-343-6532
  534.